#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<ctype.h>


//字符分类函数
//islower()
//int main()
//{
//	int ret = islower('A');
//	printf("%d\n", ret);
//
//	ret = islower('a');
//	printf("%d\n", ret);
//	return 0;
//}

//int main()
//{
//	int ret = isxdigit('9');
//	printf("%d\n", ret);
//	return 0;
//
//}


//写一个代码，将字符串中的小写字母转大写，其他字符不变
//int main()
//{
//	int i = 0;
//	char arr[] = "I have a good day!";
//
//	while (arr[i] != '\0') {
//		if (islower(arr[i]))
//			arr[i] -= 32;
//		i++;
//	}
//	printf("%s\n", arr);
//	return 0;
//}


//字符转换函数
//int tolower(int c); 将参数传进去的⼤写字⺟转⼩写 
//int toupper(int c); 将参数传进去的⼩写字⺟转⼤写

//int main()
//{
//	char ch = toupper('a');
//	printf("%c\n", ch);
//
//	char ch1 = tolower('A');
//	printf("%c\n", ch1);
//	return 0;
//}


//int main()
//{
//	char arr[] = "I will have a good day";
//	int i = 0;
//	while (arr[i] != '\0') {
//		if (islower(arr[i])) {
//			arr[i] = toupper(arr[i]);
//		}
//		i++;
//	}
//	printf("%s\n", arr);
//
//	return 0;
//}


//strlen 的使⽤和模拟实现
#include<string.h>

//int main()
//{
//	char arr[] = {'a', 'b' ,'c'};
//
//	size_t len = sizeof(arr);
//	printf("%d\n", len);
//	return 0;
//}


//int main()
//{
//	if (strlen("abc") - strlen("abcdef") > 0) {
//		printf(">\n");
//	}
//	else {
//		printf("<=\n");
//	}
//	return 0;
//}//返回值为size_t无符号型


///strlen的模拟实现：
//1.计算器方式
#include<assert.h>
//
//int my_strlen(const char* str)
//{
//	int count = 0;
//	assert(str != NULL);
//	while (*str != '\0') {
//		count++;
//		str++;
//	}
//	return count;
//}


//2.指针-指针
//int my_strlen(char* str)
//{
//	const char* start = str;
//	assert(str != NULL);
//
//	while (*str != '\0') {
//		str++;
//	}
//	return str - start;
//}

//3.递归
//size_t my_strlen(char* str)
//{
//	assert(str != NULL);
//	if (*str != '\0') {
//		return 1 + my_strlen(str + 1);
//	}
//	else
//		return 0;
//}
//
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//	return 0;
//}


//strcpy
//int main()
//{
//	char arr1[] = "abc";
//	char arr2[20] = { 0 };
//
//	strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//	return 0;
//}
char* my_strcpy( char* dest, const char* str)
{
	assert(str && dest);
	char* ret = dest;
	while (*str != '\0') {
		*dest = *str;
		str++;
		dest++;
	}
	*dest = *str;
	return ret;
}


int main()
{
	char arr1[] = "abc";
	char arr2[5] = { 0 };

	char* pstr = my_strcpy(arr2, arr1);
	printf("%s\n", pstr);
	return 0;
}